public class FinalTest {
    /**
     * 通过final关键字指向引用数据类型的时候，那么对象的引用地址就不可以
     * 再进行改变，但是对象对应的相关属性值是可以改变的。
     * 例如：
     *   private Student student=new Student("张三","20");
     *   我们可以
     *
     */
    private static final Student student=new Student();

    /** 此外如果final用在八种基本数据类型上，那么就说明此值不可以再进行改变 **/
    public static  final int MAX=100;

    /** static final 和 final 的区别在于 static final是所有对象中共用一份，但是final表示每个对象中的值 **/
    public final int maxTwo=200;

    /** 如果一个类型被定义为final并且刚开始如果没有赋值的话，则必须在所有定义的 **/

    public static void main(String[] args) {
        student.setAge(20);
        FinalTest finalTest=new FinalTest();

        System.out.println();
        System.out.println(student.getAge());
        //这样是不合法的,因为我们无法更改他的引用地址
//        student=new Student();

        student.setAge(30);
        System.out.println(student.getAge());
    }
}
